#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time       :   10:09
# Author     : Y4
# Site       : 
# File       : 004 进程池非阻塞式.py
# Software   : PyCharm


'''
非阻塞式
全部添加到列队中,立刻返回家
'''


from multiprocessing import Pool
import os
import time
import random

def task(task_name):
    print('开始做任务啦',task_name)
    start = time.time()
    time.sleep(random.random()*2)
    end = time.time()
    # print('完成任务:{},用时:{},进程id:{}'.format(task_name,start-end,os.getpid()))

    return '完成任务:{},用时:{},进程id:{}'.format(task_name,start-end,os.getpid())

container = []
def cb(n):
    container.append((n))


if __name__ == '__main__':
    pool = Pool(5)
    tasks = ['听音乐','散步','吃饭','洗衣服','打游戏','洗澡','做饭']
    for i in tasks:
        pool.apply_async(task,args=(i,),callback=cb)        # 非阻塞调用

    pool.close()        # 添加任务结束
    pool.join()         #

    for c in container:
        print(c)


'''
开始做任务啦 听音乐
开始做任务啦 散步
开始做任务啦 吃饭
开始做任务啦 洗衣服
开始做任务啦 打游戏

完成任务:吃饭,用时:-0.35156846046447754,进程id:17608
开始做任务啦 洗澡
完成任务:洗衣服,用时:-0.6532840728759766,进程id:17876
开始做任务啦 做饭

完成任务:打游戏,用时:-1.4356942176818848,进程id:10060
完成任务:散步,用时:-1.5050175189971924,进程id:15788
完成任务:听音乐,用时:-1.5767805576324463,进程id:18108
完成任务:洗澡,用时:-1.9938509464263916,进程id:17608
完成任务:做饭,用时:-1.819084882736206,进程id:17876
voer!!!
'''
